open closed principle pseudocode